"Desmitificacion" de las tarjetas POST (Power On Self Test)


En este material, toca hablar un poco sobre las tarjetas POST BIOS, destinadas a revelar el punto en que una placa se encuentra en la secuencia de inicio.
Para empezar, apuntar los debidos créditos para las páginas web que me han servido de guía:
postcodemaster.com
wikipedia.org/wiki/Low_Pin_Count
alegsa.com.ar/Dic/lpc
intel.com/support
bbright.tripod.com/information/postcard
wikipedia.org/wiki/Power-on_self-test
techrepublic.com/article/Use a POST card to save time when troubleshooting failed hardware

Por lo que me ha dado cuenta, este tema se encuentra algo hundido en la oscuridad.
Según han notado, en Internet hay mucha información al respeto, pero que no se centra en explicar el funcionamiento y manejo de las mismas.
Por eso escribí este recopilatorio, intentando "desmitificar" un poquito el tema.
Los que lo leen podrían decir si he tenido algún éxito, o no…

Cada vez que encendemos un ordenador, el ROM BIOS ejecuta un test de diagnosis para los componentes hardware del sistema; es lo que se denomina como Power On Self Test (POST).
Al arrancar, la placa sigue una secuencia de pasos (descrita en BIOS), comprobando e inicializando cada componente hardware.
Antes de comenzar cada paso, la BIOS envía 2 dígitos, que identifican el paso, a un puerto I/O; se trata habitualmente del puerto 80H, pero algunas máquinas Compaq usaban el 84H.
Este código se conoce como POST Code (código POST).
Si la BIOS detecta un problema, se para en ese paso y el último código mostrado nos revela en qué punto ha quedado la ejecución del POST.
Interpretando correctamente el respectivo código, podemos averiguar que componente está fallando.

Para leer la información del puerto I/O 80H, necesitamos una tarjeta dedicada a este propósito.
Este puerto se puede acceder por el bus ISA, PCI, mini PCI, LPC…
Cuando la tarjeta detecta el código 80H enviado por las líneas "Address", lea inmediatamente los 2 dígitos que van a aparecer en las líneas "Data".
Para los ordenadores de sobremesa se usan tarjetas PCI, o ISA para las placas más antiguas.
Si una placa lleva los dos tipos de zócalos, es preferible usar la conexión ISA, ya que esta se inicializa antes que la PCI.

Para los portátiles, se usan los puertos mini-PCI, o LPC.
Algunas placas llevan un conector especial, dedicado exclusivamente para el puerto I/O 80H, donde serían disponibles directamente los códigos POST, sin necesidad de descodificar las líneas "Address".

Recuerden que el bus LPC (Low Pin Count) comunica el circuito Super I/O (conocido también como Embedded Controller, o KBC) con el puente sur; el que controla el bus PCI (e ISA en las antiguas placas).

He de mencionar que (desde hace tiempo) el chip de BIOS ya no se conecta al bus LPC; va conectado directamente al chip Super I/O, por la interfaz SPI, o FWH.
Los nuevos chipsets llevan un chip de BIOS aparte (con información específica), que (habitualmente) no tiene nada común con el chip Super I/O. Sin embargo, este sigue llevando su chip de BIOS dedicado al arrancar la placa (que hace el interés de este documento)…
Hay máquinas de las más nuevas (plataformas iCore) que tambien suelen compartir el mismo chip de BIOS entre KBC y PCH.
El bus LPC está constituido por 7 señales de mayor importancia (obligatorias); 4 líneas bidireccionales para transferencia de datos, LAD0-3 y 3 señales de control, FRAME#, CLK y RST#.
Otras 6 señales de menor importancia (opcionales) están definidas; para interrupciones, acceso directo a memoria, etc.
Las primeras 7 son las que interesan en nuestro caso.

Sobre todo, ese documento se refiere a las placas de portátil.
En las placas antiguas, dotadas con zócalo mini PCI, todas las tarjetas POST interceptan el código vehiculado por el bus PCI y lo enseñan correctamente.
Como mucho de ustedes se haya dado cuenta, el gran problema de estas tarjetas de test, es que no siempre funcionan insertadas en el zócalo mini PCI-Express…
Eso se debe a que los códigos BIOS ya no se vehiculan por el respectivo bus PCI-Express. Recuerdan que las conexiones PCI-Express se realizan directamente entre dos dispositivos, sin que otro tenga acceso al mismo bus.
En nuestro caso, uno de los dispositivos seria el puente sur (o un chipset complejo) y el otro seria representado de la tarjeta Wireless, que tiene habilitado un zocalo en la placa base. Por lo cual, entre los dos dispositivos no hay necesidad de vehicular los códigos BIOS…
Para solventar este problemilla, el zócalo mini PCI-Express lleva unos pines reservados para las conexiones del bus LPC.
En una placa de portátil, no se debe confundir el bus LPC con el zócalo/bus mini PCI-Express.
El gran problema es que los fabricantes no han llegado a un acuerdo para respetar un estándar general de conexión LPC en ese zócalo (una pena).
En algunas placas llegan parte de las señales LPC y otras no están disponibles, o están cableadas hacia unos pines diferentes…
Por otra parte, algunos fabricantes han designado unos conectores especiales para leer los códigos POST BIOS.
Asus monta en la placa un conector destinado al puerto ELPC. Se trata habitualmente de un conector para cable flex, que no tiene correspondencia en todas las tarjetas POST. Las que si lo llevan, salen algo más caras.

Se puede ver que esa misma lleva incluso un puerto I2C para comunicar con baterías…
Lo peor es que en muchos casos, las placas Asus llevan los pads de ese conector, pero sin que el conector mismo este soldado en la placa. Esto se puede solventar soldando, para pruebas, un conector adecuado, guardado en un cajón al lado de la tarjeta POST correspondiente.

He de añadir que las placas Asus (por lo menos mas nuevas), pueden enseñar el código POST en una tarjeta especial, conectada en zócalo DDR.
Algunas placas Acer llevan también los pads para un conector "Golden Finger Debug Board"; aunque casi nunca esta soldado. Por lo menos hace más fácil soldar los cables LPC de la tarjeta POST.
Me refiero, por ejemplo, al conector DB1 de la placa Wistron JV50-MV; que montan los equipos Aspire 5338-5738.

Otras placas, como la de Acer AOD255 (Compal LA-6221P PAV70), llevan un conector aparte (4 pines) para el puerto 80H, que sale directamente del Embedded Controller, "EC Debug Port" (JP25).

Como mención, sin entrar en más detalles, los equipos Samsung acostumbran enviar el código POST por el conector VGA, necesitando una tarjeta especial.
En caso de que un zócalo mini PCI-Express respeta un estándar y la tarjeta POST funciona, las conexiones correspondientes al bus LPC serían las siguientes

    LFRAME#
    LAD3
    LAD2
    LAD1
    LAD0
    RST#
    CLK

      8
    10
    12
    14
    16
    17
    19

En algunas placas (dv2000, Aspire 5741, Asus, etc.) no llega ninguna señal LPC al zócalo mini PCI-Express.
Debemos entonces conectar unos cablecitos finos entre la tarjeta POST y las líneas LPC correspondientes de la placa base.
Una placa dv2000 Wistron Pamirs lleva unos pads dedicados a este propósito; G46-49 y G77-79. Para dv2000 Wistron Akita, serian G49-52 y G75-77.

Bueno, si ya hemos conseguido leer los códigos BIOS, necesitamos "descifrarlos".
Como hay varios fabricantes de BIOS, se imaginan que tampoco acordaron respetar un estándar en el dominio…
En un vínculo arriba mencionado, encontraran casi todos los códigos BIOS; guardan esa web entre sus favoritos del navegador web.
Hace tiempo que encontré un muy buen manual de una tarjeta POST. Ante todo, lleva explicados todos los códigos BIOS, en función de cada fabricante; mejor no se puede…
Codigos BIOS de una tarjeta POST

Al final, puede ser un poco tedioso sacar provecho de los códigos POST BIOS.
Los códigos cambian rápido en el display, por lo menos al encender la placa. La idea es capturar los últimos 2-3 códigos, que aparecen antes de que la placa se cuelgue.
Después hay que buscar por Internet, a ver si alguien ha dejado alguna "huella" que nos pueda ayudar. También sirve preguntar en varios foros, nunca se sabe…
Una vez, trabajando con una placa dv2000 Wistron Pamirs, pude capturar la secuencia de los 3 últimos códigos, "2A -> 38 -> DA".
Siendo una maquina dv2570es, con BIOS Phoenix, el código "DA" se traduce por "Extended Block Move".
Eso no parece ayudar mucho, pero posteando en un foro especializado, un colega con mucha experiencia me dijo que las placas que se paraban en secuencia "38 -> DA" las arregló cambiando el chip de video por uno nuevo. Así lo hice y repare mi placa también...
Otras placas, con BIOS Phoenix, se paraban en "2C", o "2E"; directamente traducidas por "RAM failure". Sin embargo, se trataba de un modulo de RAM defectuoso.
Me acuerdo de una placa Acer TravelMate 4000 (con zócalo mini PCI), que me tiraba el código "2E" cuando le metí (por casualidad) un módulo RAM defectuoso.

En Internet, especialmente en eBay, encontraran en venta varios modelos de tarjetas POST BIOS.
Les aconsejo descartar directamente las que se "recomiendan" por llevar el codigo Qiguan; siendo una mierda, que no ayuda en absoluto, nos metera mas en la niebla.
Tampoco sirven de algo las "hermosas" pantallas LCD que llevan otras.
Solamente los dos dígitos del clásico POST deben ser interpretados correctamente, como explique arriba…

Si después de leer todo esto, algunos sabrán sacar provecho de esas tarjetas, considerare que no he perdido el tiempo escribiendo.

Referencias externas
Volver a la pagina principal de tutoriales